The present invention relates to a system and method for modeling the semantics of a natural language. More particularly, the present invention relates to a natural language processing framework for brokering interpretive processing between a natural language enabled client application and one or more analysis engines.
A natural language is language as produced by people (as opposed to computer languages or other artificial languages), including all of the idioms, assumptions and implications of the utterance or text. In the context of natural language processing, a command and control system processes natural language utterances or texts and attempts to recognize and to interpret the utterance or text to derive a usable interpretation.
Conventionally, one technique for providing natural language command and control involves static recognition of pre-encoded commands. For example, commercially available voice-to-text programs allow the user to use simple commands to initiate pre-encoded operations, such save file. However, such programs typically cannot process such commands unless the exact command is used. In other words, store file may not be properly understood by an application coded to recognize the command save file.
Similarly, question/answer type applications typically include pre-encoded phrases or terms in order to facilitate search and retrieve-type functions. However, conventional implementations require the specific search term to be used in the utterance or text in order to succeed, and consequently cannot adequately account for the richness of human speech.
Programming natural language applications is extremely difficult. Typically, programmers know how to code in a computer language, but have little experience diagramming sentence structures and/or performing linguistic analysis. This deficiency makes programming for natural language applications difficult. Moreover, extending a natural language software application coded for the English language to work with other languages typically requires recoding, not only of the software application, but also of any associated linguistic analysis engines. This makes programming for natural language applications extremely difficult and potentially very expensive.